package estates.model;

import java.util.List;
import java.util.HashMap;

public abstract class Dekorator extends Estate {

  Estate element;

  public void setElement(Estate element) {
    this.element = element;
  }

  public Estate getElement() {
    return element;
  }

  @Override
  public void setUser(User user) {
    element.setUser(user);
  }

  @Override
  public void setComments(List<Comment> comments) {
    element.setComments(comments);
  }

  @Override
  public User getUser() {
    return element.getUser();
  }

  @Override
  public List<Comment> getComments() {
    return element.getComments();
  }

  public Dekorator(Estate e) {
    element = e;
  }

  public Dekorator() {
    
  }

  @Override
  public int getTypOferty() {
    return element.getTypOferty();
  }

  @Override
  public void setTypOferty(int typ_oferty) {
    element.setTypOferty(typ_oferty);
  }

  @Override
  public int compareTo(Estate ob) {
    return 0; // TODO: Nalezy napisac poprawne metody porownujace!
  }

  @Override
  public boolean isCommentAcceptable(Comment comment) {
    return element.isCommentAcceptable(comment);
  }

  @Override
  public boolean matchesQuery(Estate wzorzec) {
    return element.matchesQuery(wzorzec);
  }

  @Override
  public int place(int by, int ilosc_kubkow) {
    return element.place(by, ilosc_kubkow);
  }

  @Override
  public int rPlaceByCzyRozkladowy(int ilosc_kubkow) {
    return element.rPlaceByCzyRozkladowy(ilosc_kubkow);
  }

  @Override
  public int rPlaceByLiczbaPieter(int ilosc_kubkow) {
    return element.rPlaceByLiczbaPieter(ilosc_kubkow);
  }

  @Override
  public int rPlaceByRokBudowy(int ilosc_kubkow) {
    return element.rPlaceByRokBudowy(ilosc_kubkow);
  }

  @Override
  public int rPlaceByliczbaPokoi(int ilosc_kubkow) {
    return element.rPlaceByliczbaPokoi(ilosc_kubkow);
  }

  @Override
  public int rPlaceByMetraz(int ilosc_kubkow) {
    return element.rPlaceByMetraz(ilosc_kubkow);
  }

  @Override
  public int rPlaceByCena(int ilosc_kubkow) {
    return element.rPlaceByCena(ilosc_kubkow);
  }

  @Override
  public int getNumer_oferty() {
    return element.getNumer_oferty();
  }

  @Override
  public void setNumer_oferty(int numer_oferty) {
    element.setNumer_oferty(numer_oferty);
  }

  @Override
  public int getCena() {
	  return element.getCena();
  }

  @Override
  public int getPowierzchnia() {
	  return element.getPowierzchnia();
  }

  @Override
  public String getWojewodztwo() {
	  return element.getWojewodztwo();
  }

  @Override
  public String getOpis() {
	  return element.getOpis();
  }

  @Override
  public Comment addComment(HashMap<String, Object> commentData, User user) {
	 return element.addComment(commentData, user);
  }

  @Override
  public HashMap<String, String> obliczSrednieOceny(){
      return element.obliczSrednieOceny();
  }
}



